#coding:utf-8
import pymysql


import pandas as pd
import csv
import re
import numpy as np
from datetime import datetime

# 打开数据库连接
db = pymysql.connect(host="localhost", user="root", password="hui123456", db='dbtest')
# 使用cursor()方法创建一个游标对象cursor
cursor = db.cursor()
# 使用execute()方法执行SQL查询
#cursor.execute("create database dbtest charset=utf8;")
# 使用 fetchone() 方法获取单条数据

sql="""
     SELECT day as "日期" ,shop as "平台", qudao as "渠道", Product_BianMa as "商家编码",  SUM(Product_num)  as "商品数量" from doudian_day 
     WHERE MONTH(day)=1  AND (order_zt="完成" OR order_zt="等待出库" OR order_zt="等待确认收货" OR order_zt="已签收" OR order_zt="待配货" OR order_zt="待发货" OR order_zt="交易成功" OR order_zt="已完成" OR order_zt="卖家已发货，等待买家确认"  OR order_zt="买家已付款，等待卖家发货" OR order_zt="已发货" OR order_zt="调度中" 
      OR order_zt="已收货" OR order_zt="已发货未签收" OR order_zt="已发货，待签收" OR order_zt="已发货，待收货" OR order_zt="(锁定)等待确认收货" OR order_zt="部分发货")
     AND order_sh != "退款成功"  AND order_sh != "售后完成"  AND order_sh != "退款完成"  AND order_sh != "已全额退款" group by day, shop, qudao,Product_BianMa
    """

cursor.execute(sql)
result=cursor.fetchall()


dou_date_res=pd.DataFrame(list(result),columns=['日期','平台','渠道','商家编码','商品数量'])

#处理每行多订单情况
#分列
s_1=[] #分列结果
r_1=[]  #商家编码
r_3=[]  #商品数量
r_4=[]  #渠道
r_5=[] #达人昵称
r_6=[]  #流量类型
r_7=[]  #流量来源
r_8=[]  #平台

for date_s in list(dou_date_res['商家编码']):
    if '+' in date_s :
        date_split=str(date_s).split('+')
        s_1.append(date_split)

    elif '赠' in date_s :

        date_split=str(date_s).split('赠')
        s_1.append(date_split)


    elif '＋' in date_s :
        date_split=str(date_s).split('＋')
        s_1.append(date_split) 
    else: 
        s_1.append([date_s])

dou_date_res['编码分裂']=s_1

#date_concat.reindex(range(len(date_concat['编码分裂'])))
dou_date_res=dou_date_res.reset_index(drop=True)
#print(date_concat)
#cc=date_concat_s['编码分裂']

n=0
for i in list(dou_date_res['编码分裂']):
    #print( len(i))
    
    #查i对应的索引值
    #n=list(date_concat['编码分裂']).index(i)
    #分裂后生成的是列表，所以用列表长度判定
    if len(i) == 1: #判定是否有多的订单
        r_1.append(i[0])
        r_3.append(list(dou_date_res['商品数量'])[n])
        r_4.append(list(dou_date_res['渠道'])[n])
        r_5.append(list(dou_date_res['日期'])[n])
        #r_6.append(list(dou_date_res['流量类型'])[n])
        #r_7.append(list(dou_date_res['流量来源'])[n])
        r_8.append(list(dou_date_res['平台'])[n])


    else:  #多订单的情况下分行并对应单量
        for c in i :
            r_1.append(c)
            r_3.append(list(dou_date_res['商品数量'])[n])
            r_4.append(list(dou_date_res['渠道'])[n])
            r_5.append(list(dou_date_res['日期'])[n])
            #r_6.append(list(dou_date_res['流量类型'])[n])
            #r_7.append(list(dou_date_res['流量来源'])[n])
            r_8.append(list(dou_date_res['平台'])[n])

    n+=1
#s={'产品':r_1,'商品数量':r_3,'渠道':r_4,'达人昵称':r_5,'流量类型':r_6,'流量来源':r_7,'平台':r_8}
s={'日期':r_5,'产品':r_1,'渠道':r_4,'商品数量':r_3,'平台':r_8}
result=pd.DataFrame(s)
result=result.groupby([result['日期'],result['平台'],result['渠道'],result['产品']],as_index=False).sum()
#判定产品类别
def d(x):
    if '+' in x :
        return '其他'
    elif '粉面两掺' in x :
        return '粉面两掺'
    elif '133g袋装' in x :
        return '袋装板面'
    
    elif '板面桶装' in x :
        return '桶装板面'
    elif '乐享杯' in x :
        return '乐享杯桶装'
    elif '家庭版袋装米线' in x or '家庭版' in x or  '家庭麻酱米线' in x :
        return '家庭版麻酱米线'
    elif '欢享土豆粉' in x or '欢享版土豆粉' in x  :
        return '欢享土豆粉'
    elif '轻享版' in x :
        return '轻享土豆粉'
    elif ('乐享版刀削面' in x) or ('乐享刀削面' in x) :
        return '乐享刀削面'
    elif ('乐享版土豆粉' in x) or ('乐享土豆粉' in x)or ('286g' in x):
        return '乐享土豆粉'
    elif '荆芥土豆粉' in x :
        return '荆芥土豆粉'
    elif '荆芥麻酱米线' in x  or  ('荆芥袋装米线' in x) :
        return '荆芥米线'
    elif ('肥汁米线桶装' in x )  or  ('肥汁桶装' in x ):
        return '肥汁桶装'
    
    elif '117g肥汁' in x  or  ('肥汁米线117g' in x) :
        return '117g肥汁米线'
    elif '203g肥汁' in x  :
        return '203g肥汁米线'
    elif '线下肥汁' in x  :
        return '线下肥汁米线'
    elif '80g土豆粉' in x or  ('土豆粉80g' in x):
        return '其他'
    elif '板面底料1桶' in x  or ('板面调料' in x):
        return '其他'
    elif x=='青春龙年礼盒' :
        return '经典土豆粉'
    elif ('土豆粉') in x or  ('士豆粉' in x) :
        return '经典土豆粉'
    elif '豆芽板面' in x or ('166g' in x ):
        return '豆芽板面'
    elif '板面' in x or ('146g' in x ):
        return '桶装板面'
    elif '桶' in x :
        return '石磨桶装'
    elif ('石磨' in x ) or ('经典' in x ) or ('麻酱' in x ) or ('传统' in x ) or ('青春' in x ) or ('麻辣' in x ) or ('来点尝一尝' in x ) or ('01款' in x )or ('联名' in x ):
        return  '袋装米线'
    elif '刀削面面饼' in x :
        return '其他'
    elif '刀削面' in x :
        return '刀削面'
    elif '烩面' in x :
        return '炝锅烩面'
    else :
        return '其他'


result['分类']=result['产品'].map(d)
#提取件数
def m(x):
   
    if x=='土豆粉龙年礼盒' or   x=='青春龙年礼盒':
        return 6
    elif  x=='刀削面龙年礼盒' :
        return 3
    elif  '烩面龙年礼盒' in x :
        return 6
    
    elif ('乐享版' in x ) or  ('轻享版' in x ) :
        try:
            return re.findall(r"(\d+)袋",x)[-1]
        except :
            return 0
    elif '土豆粉' in x  or  ('士豆粉' in x) or  ('粉面两掺' in x) :
        try:
            return re.findall(r"(\d+)袋",x)[-1]
        except :
            return 0
    elif '桶' in x :
        try:
            return re.findall(r"(\d+)桶",x)[-1]
        except :
            return 0
    elif ('石磨' in x ) or ('经典' in x ) or ('麻酱' in x ) or ('传统' in x ) or ('青春' in x ) or ('麻辣' in x ) or ('来点尝一尝' in x ) or ('联名' in x ) or ('荆芥' in x )or ('袋装米线' in x ) or ('肥汁' in x ) :
        
        try:
            return  re.findall(r"(\d+)袋",x)[-1]
        except :
            return 0
    elif '01款' in x :
        return 1
    elif ('刀削面' in x)  or  ('烩面' in x ) or ('板面' in x ):
        try:
            return re.findall(r"(\d+)袋",x)[-1]
        except :
            return 0
    else :
        return 0
    
result['件数']=result['产品'].map(m)
result['件数']=result['件数'].astype(int)
result['总件数']=result['件数'] * result['商品数量']

#result.to_excel(r'G:\结果\土豆粉各渠道出单.xlsx')
result=result.loc[result['分类'] != '其他',:]
result_td=result.groupby([result['日期'],result['平台'],result['渠道'],result['产品'],result['分类']],as_index=False).agg(总件数=('总件数','sum'))

result_td.to_excel(r'G:\工作\2025年订单\1月\结果\土豆粉各渠道出单汇总.xlsx')

